﻿package com.superwindcloud.blackjack

import androidx.compose.foundation.Image
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.offset
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.Button
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.unit.dp

@Composable
fun HelpDialog(modifier: Modifier = Modifier) {
    val openDialog = remember { mutableStateOf(false) }
    Box(modifier = modifier) {
        Image(
            painter = painterResource(id = R.drawable.help),
            contentDescription = "Custom Icon",
            modifier = Modifier
                .align(Alignment.TopEnd)
                .padding(16.dp)
                .size(48.dp)
                .offset(y = 50.dp)
                .clickable {
                    openDialog.value = true
                }
        )

        if (openDialog.value) {
            AlertDialog(
                onDismissRequest = {
                    openDialog.value = false
                },
                title = { Text("Help") },

                text = {
                    Text(
                        text = "点数计算： 每张牌都有点数，2到10的牌的点数就是其牌面的数字；J、Q、K的点数是10分；A有两种算法，1或者11，如果A算为11时总和大于21，则A算为1。例如（A,8）是19点，（A,7,J）则为18点。\n" +
                                "　　爆牌：玩家手中牌的总点数超过21点。\n" +
                                "　　黑杰克（BlackJack）：一张A带一张10点的牌，比其他21点的牌大，例如（A,Q）。闲家获得黑杰克，可以获得所下注的1.5倍。\n" +
                                "　　停牌：玩家不再要牌，等待其他玩家操作。\n" +
                                "　　要牌：\n" +
                                "　　.闲家根据自己手上的点数决定是否要牌，如果要牌，则系统再发一张牌给玩家。如果要牌后总点数超过21，则算爆牌，玩家输掉本轮游戏；若要牌后点数为21点，则不能再要；如果要牌后总点数不到21点，则玩家可以继续“要牌”“停牌”“加倍”。\n" +
                                "　　.庄家持牌总点数少于17，则必须要牌，直到超过16，如果庄家的总点数等于或多于17点，则必须停牌。如果庄家手中有A，且A作11点时大于16点，做1点时小于或等于16点，则由庄家自己选择是否要牌。\n" +
                                "　　加倍：双倍下注(Double)如果您已经抽取了两张纸牌，在这两张牌不是“黑杰克”的前提下，如果认为第三张牌可以让您赢过庄家的手牌，您可以要求「双倍押注」。您的赌注将增加双倍，而您只可以再抽取一张额外纸牌。\n" +
                                "　　保险：发过牌后如果庄家手中拿到明牌A，玩家就有机会买保险，保险金是玩家当初下注的一半。如果押过保险后，庄家是黑杰克（即庄家的另一张牌为10、J、Q、K），那么需要赔给玩家2倍的保险金，游戏结束。\n" +
                                "　　.如果玩家选择保险：\n" +
                                "　　庄家不是黑杰克，庄家首先收走保险金，然后进行要牌、比较的程序，与前述相同。\n" +
                                "　　如果玩家拿到21点，仍能拿到全部的酬金。\n" +
                                "　　.如果玩家不选择保险：\n" +
                                "　　庄家是黑杰克时，收走玩家赌金，游戏结束。\n" +
                                "　　庄家不是黑杰克,仍然进行要牌、比较等程序，与前述相同。\n" +
                                "　　对子：闲家可以选择在自己或其他闲家上下注押对子，如果所压的闲家获得对子（即两张相同种类的牌），则下注闲家胜，庄家赔11倍的筹码。\n" +
                                "　　分牌：若玩家获得对子，则可以选择分牌，将这两张牌分成两手牌，由这个玩家一人操作，每手牌的赌注与开始的赌注相同。分牌后不能“加倍”，拿到BlackJack牌型也只算普通的21点。\n" +
                                "　　牌型比较\n" +
                                "　　所有闲家都与庄家比较。\n" +
                                "　　黑杰克为特殊牌型，比其他所有牌型都大。除黑杰克，其他牌型都以点数比较大小。\n" +
                                "　　庄家和闲家点数相同，或都拿到黑杰克，则为平局。\n" +
                                "　　庄家和闲家都爆牌，系统判断庄家赢。"
                    )
                },
                confirmButton = {
                    Button(
                        onClick = {
                            openDialog.value = false
                        }
                    ) {
                        Text("OK")
                    }
                }

            )

        }
    }
}